/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tela;

import ferramentas.CFG;
import ferramentas.Query;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import moodlerest.MoodleCourse;
import moodlerest.MoodleRestCourse;
import moodlerest.MoodleRestCourseException;
import moodlerest.MoodleRestWebService;
import pessoal.Curso;

/**
 *
 * @author ciar
 */
public class formularioCurso extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet formularioCurso</title>");
            out.println("</head>");
            out.println("<body>");

            Query q = new Query();

            SimpleDateFormat formater = new SimpleDateFormat("dd/MM/yyyy");
            String nome = request.getParameter("nome");
            String tipoVaga = request.getParameter("tipo_vaga");
            if (tipoVaga == null) {
                tipoVaga = "DS";
            }
            String finalidade = request.getParameter("finalidade");
            String inicio = request.getParameter("inicio");

            String fim = request.getParameter("fim");

            String homologacaoPre = request.getParameter("homologacaoPreliminar");
            String homologacaoF = request.getParameter("homologacaoFinal");
            String inicioRec = request.getParameter("inicioRecurso");
            String fimRec = request.getParameter("fimRecurso");
            String cpf = request.getParameter("coordenador");

            int cargaHoraria;
            try {
                cargaHoraria = Integer.parseInt(request.getParameter("carga_horaria"));
            } catch (Exception e) {
                cargaHoraria = 0;
            }

            int modelo_certificado;
            try {
                modelo_certificado = Integer.parseInt(request.getParameter("modelo_certificado"));
            } catch (Exception e) {
                modelo_certificado = 0;
                //modelo_certificado = 1;
            }

            //Retirada a questão do formulário de criação de curso
            //String questao = request.getParameter("questao");
            Date dataInicio = null;
            Date dataFim = null;
            Date homologacaoPreliminar = null;
            Date homologacaoFinal = null;
            Date inicioRecurso = null;
            Date fimRecurso = null;
            try {
                dataInicio = formater.parse(inicio.replaceAll("-", "/"));
                dataFim = formater.parse(fim.replaceAll("-", "/"));
                homologacaoPreliminar = formater.parse(homologacaoPre.replaceAll("-", "/"));
                homologacaoFinal = formater.parse(homologacaoF.replaceAll("-", "/"));
                inicioRecurso = formater.parse(inicioRec.replaceAll("-", "/"));
                fimRecurso = formater.parse(fimRec.replaceAll("-", "/"));
            } catch (Exception ex) {
                //System.out.println("Erro no preenchimento da Data:\n"+ex);
                dataInicio = new Date();
                dataFim = new Date();
                homologacaoPreliminar = new Date();
                homologacaoFinal = new Date();
                inicioRecurso = new Date();
                fimRecurso = new Date();
            }

            /* RETIRADO A QUESTÃO DO CURSO, LOGO NÃO POSSUI MAIS MIN E MAX CARACTERES
             * int minCaracteresQuestao;
             try {
             minCaracteresQuestao = Integer.parseInt(request.getParameter("min_caracteres"));
             } catch (Exception e) {
             minCaracteresQuestao = 0;
             }

             int maxCaracteresQuestao;
             try {
             maxCaracteresQuestao = Integer.parseInt(request.getParameter("max_caracteres"));
             } catch (Exception e) {
             maxCaracteresQuestao = 3000;
             }
            
             RETIRADO A QUESTÃO QUE ERA PASSADA COMO PARÂMETRO NA CRIAÇÃO DO CURSO E O MIN E MAX CARACT É 0*/
            Curso curso = new Curso(nome, cargaHoraria, dataInicio, dataFim, "", Integer.parseInt(finalidade), modelo_certificado, tipoVaga, 0, 0, homologacaoPreliminar, homologacaoFinal, inicioRecurso, fimRecurso);

            if (finalidade.equals("4")) { //A finalidade é orientador logo não possui polos e sim cidade-sede
                String[] cidade = request.getParameterValues("cidades_sede");
                int[] cidades = new int[cidade.length];
                int ct_p = 0;
                while (ct_p < cidade.length) {
                    cidades[ct_p] = Integer.parseInt(cidade[ct_p]);
                    ct_p++;
                }
                try {
//                String wstoken = CFG.WS_TOKEN;
//                String testMoodle = CFG.WS_MOODLE_CIAR;
//                MoodleRestWebService.init(testMoodle, wstoken);
//                MoodleCourse cursoMoodle = new MoodleCourse(curso.getNome(), curso.getNome(), 1);
//                cursoMoodle.setNumSections(6);
                    q.inserirCursoCidadesSede(curso, cidades);
//                q.atualizarCurso((q.inserirCurso(curso, polos).getNumero()) , (MoodleRestCourse.createCourse(cursoMoodle).getId()));
                    int numCurso = q.getNumeroCurso(curso);
                    q.inserirCoordenacao(cpf, numCurso);
                    out.println("<script type='application/javascript' language='javascript'>");
                    out.println("window.alert('Curso Cadastrado com sucesso!')");
                    out.println("window.location ='index.jsp';");
                    out.println("</script>");
                } catch (Exception ex) {
                    out.println("Falha na inserção do Curso! " + ex.getMessage());
                    System.out.println(ex);
                }
            } else if (finalidade.equals("1")) { //A finalidade é Orientador e Tutor logo possui polos e cidade-sede
                String[] cidade = request.getParameterValues("cidades_sede");
                int[] cidades = new int[cidade.length];
                int ct_c = 0;
                while (ct_c < cidade.length) {
                    cidades[ct_c] = Integer.parseInt(cidade[ct_c]);
                    ct_c++;
                }

                String[] polo = request.getParameterValues("polos");
                int[] polos = new int[polo.length];
                int ct_p = 0;
                while (ct_p < polo.length) {
                    polos[ct_p] = Integer.parseInt(polo[ct_p]);
                    ct_p++;
                }
                try {
                    q.inserirCursoCidadesSedeEPolo(curso, cidades, polos);

                    int numCurso = q.getNumeroCurso(curso);
                    q.inserirCoordenacao(cpf, numCurso);
                    out.println("<script type='application/javascript' language='javascript'>");
                    out.println("window.alert('Curso Cadastrado com sucesso!')");
                    out.println("window.location ='index.jsp';");
                    out.println("</script>");
                } catch (Exception ex) {
                    out.println("Falha na inserção do Curso! " + ex.getMessage());
                    System.out.println(ex);
                }
            } else {
                String[] polo = request.getParameterValues("polos");
                int[] polos = new int[polo.length];
                int ct_p = 0;
                while (ct_p < polo.length) {
                    polos[ct_p] = Integer.parseInt(polo[ct_p]);
                    ct_p++;
                }
                try {
//                String wstoken = CFG.WS_TOKEN;
//                String testMoodle = CFG.WS_MOODLE_CIAR;
//                MoodleRestWebService.init(testMoodle, wstoken);
//                MoodleCourse cursoMoodle = new MoodleCourse(curso.getNome(), curso.getNome(), 1);
//                cursoMoodle.setNumSections(6);
                    q.inserirCurso(curso, polos);
                    int numCurso = q.getNumeroCurso(curso);
                    q.inserirCoordenacao(cpf, numCurso);
//                q.atualizarCurso((q.inserirCurso(curso, polos).getNumero()) , (MoodleRestCourse.createCourse(cursoMoodle).getId()));
                    out.println("<script type='application/javascript' language='javascript'>");
                    out.println("window.alert('Curso Cadastrado com sucesso!')");
                    out.println("window.location ='index.jsp';");
                    out.println("</script>");
                } catch (Exception ex) {
                    out.println("Falha na inserção do Curso! " + ex.getMessage());
                    System.out.println(ex);
                }
            }
            out.println("</body>");
            out.println("</html>");

        } finally {
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
